=[1,2]
a=[3,4]
b+b a
[1, 2, 3, 4]
김보람
April 4, 2022
intro
-
현재 파이썬은 길이가 2인 벡터의 덧셈을 지원하지 않음
-
아래와 같은 기능을 구현하는 함수를 만들고 싶음
[1,2],[3,4] -> [4,6]
-
구현
-
test
make myfuns.py
-
생각해보니까 vec2_add는 내가 앞으로 자주 쓸 기능임
-
그런데 현재 사용방법으로는 내가 노트북파일을 새로 만들때마다 def vec2_add(a,b):
와 같은 함수를 매번 정의해줘야 하는 불편함이 있다.
해결1
-
자주 사용하는 함수를 myfuns.py
에 저장한다. (4주차 수업)
%run myfuns를 실행
준비:“00” -> 커널재시작
해결 2
-
자주 사용하는 함수를 myfuns.py
에 저장한다. (4주차 수업)
-
import myfuns를 이용
(준비) “00” -> 커널 재시작
-
사용방법1
준비: “00” -> 커널재시작
.
의 의미: 상위, 하위
의 개념!(주의) 아래와 같이 사용 불가능 하다.
NameError: name 'vec2_add' is not defined
-
사용방법2
준비: “00” -> 커널재시작
NameError: name 'myfuns' is not defined
-
사용방법3
준비: “00” -> 커널재시작
-
사용방법4
준비: “00” -> 커널재시작
-
사용방법5
준비: “00” -> 커널재시작
-
사용방법6
준비: “00” -> 커널재시작
(오히려 아래는 실행불가능)
-
잘못된 사용방법1
준비: “00” -> 커널재시작
-
사용방법 7
준비: “00” -> 커널재시작
NameError: name 'vec2_add' is not defined
-
mf란 무엇인가?
준비: “00” -> 커널재시작
Type: module String form: <module 'myfuns' from 'C:\\Users\\koinu\\python2022\\myfuns.py'> File: c:\users\koinu\python2022\myfuns.py Docstring: <no docstring>
-
Docstring의 내용을 채울 수 있을까?
준비1: myfuns.py의 파일을 수정한다. (큰따옴표 ““” 세개)
준비2: “00”->커널재시작
-
myfuns.py
는 최초 한번만 import된다.
준비: “00” -> 커널재시작
myfuns.py
파일을 열고 함수를 바꾸자.
"""이것은 길이가 2인 벡터이 합 혹은 차를 구하는 모듈입니다."""
def vec2_add(a,b):
print("이것은 myfuns.py에 정의된 함수입니다.")
return [a[0]+b[0], a[1]+b[1]]
def vec2_sub(a,b):
return [a[0]-b[0], a[1]-b[1]]
다시 myfuns를 로드하고 위를 실행하여 보자
바뀐내용이 적용되지 않는다.
커널을 다시 시작하고 임포트해보자.
“00” -> 커널재시작
-
myfuns.py는 주피너노트북파일과 같은 폴더내에 존재해야 한다.
준비1: “00”->커널재시작
준비2: myfuns.py 을 복사하여 다른 폴더로 이동. 예를들면 IP0403폴더를 만들고 그 폴더안에 myfuns2.py파일을 만들자.
-
IP0403 폴더에 있는 myfuns2.py를 실행하기 위해서는 아래와 같이 할 수 있다.
준비: “00” -> 커널재시작
-
아래도 가능하다.
준비: “00” -> 커널재시작
참고로 아래는 모두 정의되지 않음
-
언뜻 생각하면 아래가 가능할 것 같다.
-
하지만 불가능
준비: “00” -> 커널재시작
여기까지는 됨..
-
(암기) IP0403 폴더안에 __init__.py
라는 파일을 만들고 내용에 아래와 같이 쓰면 가능하다.
준비1: 위의 지침을 따른다.
준비2: “00” -> 커널재시작
컴퓨터 상식
.
: 현재폴더를 의미
..
: 상위폴더를 의미
./myfuns.py
: 현재폴더안에 있는 myfuns.py를 의미
./IP0403/myfuns2.py
: 현재폴더안에 IP0403폴더안의 myfuns2.py를 의미
../myfuns.py
: 현재폴더보다 한단계 상위폴더에 있는 myfuns.py를 의미
cd ./IP0403
: 현재 폴더안에 있는 IP0403폴더로 이동해라. (cd IP0403
으로 줄여쓸 수 있음)
cd ..
현재 폴더보다 한단계 상위폴더로 이동해라.
따라서 from . import myfuns2
는 현재 폴더에서 myfuns2를 찾아서 임포트 하라는 의미로 해석가능
-
의미상으로 보면 아래가 실해아능할 것 같은데 불가능하다.
https://guebin.github.io/IP2022/2022/04/03/(5%EC%A3%BC%EC%B0%A8)-4%EC%9B%942%EC%9D%BC.html#site-packages-(%EC%8B%A4%EC%8A%B5%EA%B8%88%EC%A7%80)
-
모듈의 개념은 아까 살펴본 것과 같다. (import를 하여 생기게 되는 오브젝트)
-
교수님들: 모듈이 모이면 패키지라고 부른다. 그리고 라이브러리는 패키지보다 큰 개념이다.
-
그런데 구분이 모호하다.
-
python 에서 numpy의 type은 모듈
-
그런데 numpy package라고 검색하면 검색이 된다.
-
심지어 numpy library 라고 해도 검색가능
-
교수님 생각: 넘파이모듈, 넘파이패키지, 넘파이라이브러리 다 맞는 말임
(숙제)